<template>
    <div>
        <el-card>
        <!--查询添加-->
        <el-row>
              <el-col :span="8">
                <el-input placeholder="请输入内容" clearable v-model="queryInfo.queryString" class="input-with-select" @clear="findPage">
                  <el-button slot="append" icon="el-icon-search" @click="findPage"/>
                </el-input>
              </el-col>
              <el-col :span="2">
                <el-button style="margin-left: 10px" @click="insert"  type="primary">添加信息</el-button>
              </el-col>
            </el-row>
          <!--列表-->
        <el-table :data="tableList" stripe  :tree-props="{children: 'children', hasChildren: 'hasChildren'}"  row-key="id" >
            <el-table-column type="expand">
                    <template slot-scope="scope">
                        <div v-html="scope.row.content" v-hljs />
                    </template>
              </el-table-column>
              <el-table-column type="index" label="序号" />
              <el-table-column prop="title" label="标题" show-overflow-tooltip/>
              <el-table-column prop="createTime" label="创建时间" />
              <el-table-column prop="nickName" label="创建人" />
          <el-table-column fixed="right" label="操作" width="180">
            <template slot-scope="scope">
              <el-button type="primary" @click="update(scope.row) " size="small" icon="el-icon-edit" circle/>
              <el-button type="danger" @click="deleteById(scope.row.id)"   size="small"  icon="el-icon-delete" circle/>
            </template>
          </el-table-column>
        </el-table>
          <!--底部分页条-->
        <el-pagination
          @size-change="handlePageSize"
          @current-change="handlePageNumber"
          :current-page="currentPage4"
          :page-sizes="[7, 25, 50, 100]"
          :page-size="queryInfo.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"/>

          <el-dialog :title="title"  :visible.sync="open1" width="60%" center >
                <el-form ref="form" :model="form" label-position="top" :rules="rules">
                    <el-form-item prop="title" label="标题" >
                            <el-input v-model="form.title" placeholder="请输入标题" style="width: 100%" maxlength="30"/>
                    </el-form-item>
                    <el-form-item  prop="content" label="内容"   >
                        <mavon-editor ref="md" v-model="form.content" :toolbars="toolbars" @imgAdd="uploadImage" />
                    </el-form-item>
                </el-form>
                <span slot="footer" class="dialog-footer">
                    <el-button @click="open1 = false">取 消</el-button>
                    <el-button type="primary" @click="clickOk">确 定</el-button>
                </span>
            </el-dialog>
        </el-card>
    </div>
</template>

<script>
import {marked} from "marked";
export default {
    data(){
        return {
            queryInfo: {
              //页码
              pageNumber: 1,
              //页数
              pageSize: 7,
              //关键字
              queryString: ""
           },
            //表格数据
            tableList:[],
            //总记录数
            total: 0,
            currentPage4: 1,
            //弹窗标题
            title: null,
            //是否打开会话框
            open1: false,
            //表单数据
            form: {},
            toolbars: {
                bold: true, // 粗体
                italic: true, // 斜体
                header: true, // 标题
                underline: true, // 下划线
                quote: true, // 引用
                ul: true, // 有序列表
                link: true, // 链接
                imagelink: true, // 图片链接
                code: true, // code
                subfield: true, // 是否需要分栏
                fullscreen: true, // 全屏编辑
                /* 1.3.5 */
                undo: true, // 上一步
                trash: true, // 清空
                /* 1.4.2 */
                navigation: true // 导航目录
            },

            rules:{
                title:[
                    { required: true, message: '标题不能为空', trigger: 'blur' },
                    { max:30,message:'标题最大不能超过30' ,trigger: 'blur'}
                ],
                content:[
                    { required: true, message: '内容不能为空', trigger: 'blur' },
                ]

            }
        }
    },

    methods:{

        uploadImage(pos,$e){
            
            let formdata = new FormData();
            formdata.append('file',$e);
            this.$ajax.post("/tool/upload",formdata).then(res=>{
              console.log(pos,this.$qiniu + res.data.data);
                this.$refs.md.$img2Url(pos, this.$qiniu + res.data.data)
            })
        },
        findPage(){
          
            this.$ajax.post("/news/findPage", this.queryInfo).then((res)=>{
                this.tableList = res.data.rows.filter(item=>{
                    if(item.content  && item.content != '')
                    item.remark = item.content;
                    item.content = marked(item.content)
                    return true;
                });
                this.total = res.data.total;
                console.log(this.tableList);
            });
        },

    //页面改变事件
    handlePageNumber(newPageNumber){
      //将分页的新数据的参数传递给后端查询
      this.queryInfo.pageNumber = newPageNumber;
      //调分页方法
      this.findPage();
    },

    handlePageSize(newPageSize){
      this.queryInfo.pageSize = newPageSize;
      this.findPage();
    },


    insert(){
      this.title = "添加新闻资讯";
      this.form = {};
      this.open1 = true;
    },
    update(row){
      
        this.title = "修改新闻资讯";
        if (row.path === '/'){
            this.isChildrenMenu = false;
        }else {
            //禁用菜单级别的选择
            this.disMenuSelect = true;
        }
          this.form = row;

          this.form.content = row.remark;
          this.open1 = true;
    },
    //删除权限信息
    deleteById(id){
      this.$confirm('您将永久删除id是{' + id +' }的新闻资讯, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        //调用后端删除权限接口
        this.$ajax.delete(`/news/delete/${id}`).then(res => {
          this.$message.success(res.data.message);
          this.queryInfo.pageNumber = 1;
          this.findPage();
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },

    //提交表单要添加的菜单数据给后端
    clickOk(){
      //进行表单校验
      this.$refs.form.validate((valid) =>{
        //校验不通过
        if(!valid) return this.$message.error('表单校验不通过，请检查后提交！')

        //校验通过 判断是否是新增
        if(this.form.id === undefined || this.form.id ===null){
          this.$ajax.post("/news/insert",this.form).then((res)=>{
            this.$message.success(res.data.message)
            this.open1 = false;
            this.findPage();
          })
        }else {
          this.$ajax.put('/news/update',this.form).then((res)=>{
            this.$message.success(res.data.message)
            this.open1 = false;
            this.findPage();
          })
        }
      })
    },

    },

    created(){
        this.findPage();
    }
}
</script>

<style>

</style>